<?
function redimensionarConProporcion($ruta_imagen, $miniatura_ancho_maximo, $miniatura_alto_maximo, $rutaSalida ){

	$info_imagen = getimagesize($ruta_imagen);
	$imagen_ancho = $info_imagen[0];
	$imagen_alto = $info_imagen[1];
	$imagen_tipo = $info_imagen['mime'];

	$proporcion_imagen = $imagen_ancho / $imagen_alto;
	$proporcion_miniatura = $miniatura_ancho_maximo / $miniatura_alto_maximo;

	if ( $proporcion_imagen > $proporcion_miniatura ){
		$miniatura_ancho = $miniatura_ancho_maximo;
		$miniatura_alto = $miniatura_ancho_maximo / $proporcion_imagen;
	} else if ( $proporcion_imagen < $proporcion_miniatura ){
		$miniatura_ancho = $miniatura_ancho_maximo * $proporcion_imagen;
		$miniatura_alto = $miniatura_alto_maximo;
	} else {
		$miniatura_ancho = $miniatura_ancho_maximo;
		$miniatura_alto = $miniatura_alto_maximo;
	}

	switch ( $imagen_tipo ){
		case "image/jpg":
		case "image/jpeg":
			$imagen = imagecreatefromjpeg( $ruta_imagen );
			break;
		case "image/png":
			$imagen = imagecreatefrompng( $ruta_imagen );
			break;
		case "image/gif":
			$imagen = imagecreatefromgif( $ruta_imagen );
			break;
	}

	$lienzo = imagecreatetruecolor( $miniatura_ancho, $miniatura_alto );

	imagecopyresampled($lienzo, $imagen, 0, 0, 0, 0, $miniatura_ancho, $miniatura_alto, $imagen_ancho, $imagen_alto);

	imagejpeg($lienzo, $rutaSalida, 80);
}

?>